/**
 * 
 * MindBox 2009
 */
package com.mindbox.viajes.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import com.mindbox.viajes.db.ConexionDAO;
import com.mindbox.viajes.dto.Pais;
import com.mindbox.viajes.exception.ExceptionBaseDatos;

/**
 * Clase para el acceso a datos de los paises. MindBox 2009
 * 
 * @author Julian
 * 
 */
public class DAOPais {

	/**
	 * Consulta todos los paises. <b>NO CONSULTA LAS CIUDADES DEL PAIS</b>.
	 * 
	 * @return
	 * @throws ExceptionBaseDatos
	 * @author Julian
	 */
	public ArrayList<Pais> getPaises() throws ExceptionBaseDatos {
		ArrayList<Pais> paises = new ArrayList<Pais>();
		ConexionDAO conexion = null;
		ResultSet rs = null;
		try {
			conexion = new ConexionDAO();
			String sql = "SELECT * FROM pais";
			rs = conexion.executeQuery(sql);
			while (rs.next()) {
				Pais p = asignarDatosPais(rs);
				paises.add(p);
			}
		} catch (Exception e) {
			String msg = "Error al consultar los datos de los paises";
			System.out.println(msg + ". Mensaje:" + e.getMessage());
			e.printStackTrace();
			throw new ExceptionBaseDatos(msg);
		} finally {
			conexion.cerrarFinal(rs);
			if (conexion != null)
				try {
					conexion.cerrarCon();
				} catch (SQLException e) {
					String msg = "Error al cerrar la BD al consultar paises";
					System.out.println(msg + ". Mensaje:" + e.getMessage());
					e.printStackTrace();
				}
		}
		return paises;
	}

	/**
	 * Asigna los datos del ResultSet a un objeto Pais.
	 * 
	 * @param rs
	 * @return
	 * @throws SQLException
	 * @author Julian
	 */
	static Pais asignarDatosPais(ResultSet rs) throws SQLException {
		Pais p = new Pais();
		p.setId(rs.getString("pais_id"));
		p.setNombre(rs.getString("pais_nombre"));
		return p;
	}
}